Automatic validation of code-improving transformations on low-level program representations

نویسندگان

  • Robert A. van Engelen
  • David B. Whalley
  • Xin Yuan
چکیده

This paper presents a general approach to automatically validate code-improving transformations on low-level program representations. The approach ensures the correctness of compiler and hand-specified optimizations at the machine instruction level. The method verifies the semantic equivalence of the program representation before and after a transformation to determine the validity of the transformation, i.e. whether the instance of the transformation is semantics preserving. To verify that the transformation is semantics preserving, the method derives semantic effects from the sequence of low-level instructions that span the execution paths affected by the transformation. The semantics are preserved if the normalized semantic effects derived from the code before and after the transformation are proven to be identical. A validating compilation system was implemented that is able to validate basic changes comprising instruction insertions, modifications, and deletions, to more powerful transformations that modify the branch structure of a function in a program.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Automatic Validation of Code-Improving Transformations

Programmers of embedded systems often develop software in assembly code due to inadequate support from compilers and the need to meet critical speed and/or space constraints. Many embedded applications are being used as a component of an increasing number of critical systems. While achieving high performance for these systems is important, ensuring that these systems execute correctly is vital....

متن کامل

Translation Validation of Optimizing Compilers

There is a growing awareness, both in industry and academia, of the crucial role of formally verifying the translation from high-level source-code into lowlevel object code that is typically performed by an optimizing compiler. Formally verifying an optimizing compiler, as one would verify any other large program, is not feasible due to its size, ongoing evolution and modification, and possibly...

متن کامل

Two Evolutionary Representations for Automatic Parallelization

In this paper we describe use of the Revolver system, a test-bed for experimenting with combinations of evolutionary representations and algorithms for automatic parallelization. Results show evidence of adaptation of auto-parallelization strategy by the evolutionary algorithms (EAs) tested, thereby suggesting that EAs are more capable of nding enabling transformations than current parallelizin...

متن کامل

Machine Code Optimization - Improving Executable Object Code

The topic of compiler optimization covers a wide range of program analysis methods and program transformations which are applied primarily to improve the speed or space efficiency of a target program. These techniques are typically applied to a representation of the target program which is, to some degree, removed from the program representation executed by the hardware. The representations on ...

متن کامل

Continuation Prolog: A new intermediary language for WAM and BinWAM code generation

We present a new intermediary language suitable for program transformations that fills the gap between Prolog source level and lower representations like binary Prolog or WAM-code. With the help of Continuation Prolog transformations on the level of continuations can be expressed that are unavailable in the usual settings of WAM-code generation.

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • Sci. Comput. Program.

دوره 52  شماره 

صفحات  -

تاریخ انتشار 2004